package com.fau.om.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;

import com.fau.om.entity.MedicalAdmin;
import com.fau.om.entity.MedicalGroup;
import com.fau.om.entity.MedicalOrders;
import com.fau.om.entity.MedicalPlatform;
import com.fau.om.util.Page;

/**
 * @desc 订单分配接口
 * @author kangyj
 * @datetime 2014年9月12日,下午6:54:10
 */
public interface IAllocationManagerService {

	/**
	 * @desc 核单部订单分配分页查询
	 * @param map 页面分页参数
	 * @param orders 订单表对象
	 * @return
	 * @author kangyj
	 * @datetime 2014年9月12日,下午9:15:36
	 */
	public Page findAllocationByPage(Map<String, Object> map, MedicalOrders orders, MedicalAdmin admin);
	
	/**
	 * @desc 核单部回收订单
	 * @param ordersIds
	 * @author kangyj
	 * @datetime 2014年11月25日,下午4:41:03
	 */
	public void recover(String ordersIds);
	
	/**
	 * @desc 订单回收验证
	 * @param ordersIds 订单id
	 * @return
	 * @author kangyj
	 * @datetime 2015年2月20日,下午5:48:28
	 */
	public boolean validRecover(String ordersIds);
	
	/**
	 * @desc 查询医院下中心的集合
	 * @param hosptialId 医院id
	 * @return
	 * @author kangyj
	 * @datetime 2014年9月27日,下午2:58:05
	 */
	public List<MedicalPlatform> findUserCenterList(String hosptialId);
	
	/**
	 * @desc 查询分组集合
	 * @param centerId 中心id
	 * @return
	 * @author kangyj
	 * @datetime 2014年9月27日,下午3:10:01
	 */
	public List<MedicalGroup> findUserGroupList(String centerId);
	
	/**
	 * @desc 查询组下核单员集合
	 * @param groupId
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月25日,下午2:48:37
	 */
	public List<MedicalAdmin> findUserList(String groupId);
	
	/**
	 * @desc 分页查询中心订单分配
	 * @param map 接收前台分页参数
	 * @param orders 待订单
	 * @param admin 当前登录用户
	 * @author kangyj 
	 * @datetime 2014年9月25日,下午4:55:53
	 */
	public Page findCenterAllocationByPage(Map<String, Object> map, MedicalOrders orders, MedicalAdmin admin);
	
	/**
	 * @desc 中心订单回收
	 * @param ordersIds
	 * @author kangyj
	 * @datetime 2014年11月25日,下午7:30:36
	 */
	public void centerRecover(String ordersIds);
	
	/**
	 * @desc 查询当前用户所在中心组的集合
	 * @param admin
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月25日,下午8:36:51
	 */
	public List<MedicalGroup> findCurCenGroupList(MedicalAdmin admin);
	
	/**
	 * @desc 查询当前用户所在核单组，核单员集合
	 * @param admin
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月25日,下午9:12:35
	 */
	public List<MedicalAdmin> findCurGroUserList(MedicalAdmin admin);
	
	/**
	 * @desc 分页查询核单组订单分配
	 * @param map 接收前台分页参数
	 * @param orders 待分配订单
	 * @param admin 当前登录用户
	 * @author kangyj
	 * @datetime 2014年9月25日,下午4:56:29
	 */
	public Page findGroupAllocationByPage(Map<String, Object> map, MedicalOrders orders, MedicalAdmin admin);
	
	/**
	 * @desc 核单组订单回收
	 * @param ordersIds
	 * @author kangyj
	 * @datetime 2014年11月25日,下午7:46:24
	 */
	public void groupRecover(String ordersIds);
	
	/**
	 * @desc 订单分配--分配到中心
	 * @param ordersIds 将要分配的订单id
	 * @param userIds 
	 * @author kangyj
	 * @datetime 2014年9月16日,下午3:46:38
	 */
	public void allocateCenter(String ordersIds, String centerIds);
	
	/**
	 * @desc 订单分配--分配到分组
	 * @param ordersIds
	 * @param userIds
	 * @author kangyj
	 * @datetime 2014年9月24日,下午7:53:05
	 */
	public void allocateGroup(String ordersIds, String groupIds);
	
	/**
	 * @desc 订单分配--分配到核单员
	 * @param ordersIds
	 * @param userIds
	 * @author kangyj
	 * @datetime 2014年9月24日,下午7:54:56
	 */
	public void allocateUser(String ordersIds, String userIds);
	
	/**
	 * @desc  未分配订单导出当前
	 * @param ids
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午3:51:43
	 */
	public Workbook exportOrdersCurrent(String ids) throws Exception;
	
	/**
	 * @desc 核单部未分配订单导出所有
	 * @param orders
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午3:50:40
	 */
	public Workbook exportOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 中心未分配订单导出所有
	 * @param orders
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午3:50:40
	 */
	public Workbook exportCenterOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 核单组未分配订单导出所有
	 * @param orders
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午3:50:40
	 */
	public Workbook exportGroupOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 已分配订单导出当前
	 * @param ids
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午5:19:38
	 */
	public Workbook exportAllocatedOrdersCurrent(String ids) throws Exception;
	
	/**
	 * @desc 核单部已分配订单导出所有
	 * @param orders
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午5:17:24
	 */
	public Workbook exportAllocatedOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 中心已分配订单导出所有
	 * @param orders
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午5:17:24
	 */
	public Workbook exportAllocatedCenterOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 核单组已分配订单导出所有
	 * @param orders
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午5:17:24
	 */
	public Workbook exportAllocatedGroupOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
}
